package java8;

public class LambdaDemo1 {

//    接口有且仅有一个抽象方法
//    允许定义静态方法
//    允许定义默认方法
//    允许java.lang.Object中的public方法
    @FunctionalInterface//这个注解如果错的话可以检查出来
    interface Printer {
        void printer(String val);
        //允许定义默认方法
        default void def() { }
        //允许定义静态方法
        static void sta() { }
        //允许java.lang.Object中的public方法
        boolean equals(Object obj);
    }

    public void printSomething(String something, Printer printer) {
        printer.printer(something);
    }

    public static void main(String[] args) {
        LambdaDemo1 lambdaDemo1 = new LambdaDemo1();
        String something = "abcdefg";

        //老办法
        /*Printer printer = new Printer() {
            @Override
            public void printer(String val) {
                System.out.println(val);
            }
        };*/

        /*Printer printer = (String val) -> {
            System.out.println(val);
        };*/

        Printer printer = val -> System.out.println(val);

        lambdaDemo1.printSomething(something, val -> {
            System.out.println(val);
        });
    }
}
